
(function(windom, $){
	if(!$) {
		console.info("no jquery");
		return;
	}
	var $nojs = function(context) {
		//在初始化nojs的各个模块之前执行的方法
		for(var name in $nojs){
			var app = $nojs[name];
			if ($.isFunction(app.enable) ? app.enable() : app.enable === true) {
				app.init(context);
			}
		}
		//延迟一点执行
		setTimeout(function(){
			console.info("setTimeout")
			
		},50);
		
	};
	
	// 把strong  折叠起来
	$nojs.autoHideStrong = {
		enable: function(){
			return enbleFlag("study");
		},
		selector:".markdown-section li strong",
		replace:'<span style="background-color:#D3D3D3;border-radius: 5px;font-family: \'Microsoft YaHei\';font-size: 0.9em;color: #5555ff;">点击查看答案</span>',
		init: function(context){
			var module = this;
			$(document).on("click",module.selector, function(){
				var $strong = $(this);
				if($strong.closest("blockquote").size()>0) {
					return false;
				}
				var text = $strong.html();
				var data = $strong.data('value') || module.replace;
				$strong.html(data);
				$strong.data("value", text);
			});
			$(module.selector, context).trigger("click");
		}
	};
	
	// blockquote折叠
	$nojs.blockquote = {
		enable: function(){
			return enbleFlag("study");
		},
		selector:".markdown-section blockquote",
		button:'<button type="button" style="border-radius:0.5em;">折叠/展示答案</button>',
		preElements:['H3','H4','H5','H6','H7'],//在这些元素后的blockquote才处理
		init: function(context){
			var module = this;
			$(module.selector, context).each(function(){
				var $blockquote = $(this);
				var $prev = $blockquote.prev();
				//没有前驱元素 或者之前的元素不是我们要求的元素
				if(!$prev || module.preElements.indexOf($prev[0].tagName) == -1){
					return false;
				}
				var $btn = $(module.button);
				$btn.on("click", function(){
					$blockquote.toggle(200);
				}).trigger("click");
				$prev.after($btn);
			});
		}
	};
	window.$nojs = $nojs;
	
	
	/*
	  markdown语法有限，利用有些格式做一些通用js操作的时候，会把不需要处理的页面也给处理了。
	  因此为页面做一些标识，对应本js中的一些通用处理
	  标识如下：
	  <details data-flags="flag1, flag2"><summary ></summary></details>
	*/
	function enbleFlag(flag){
		var $flags = $("details[data-flags]");
		if($flags.size() == 0 ){
			return false;
		}
		var flags = $flags.data("flags")
		return flags.indexOf(flag) > -1;
	}
	
})(window, jQuery)
